perm filename NEW.INS[MUS,LCS] blob
sn#309791 filedate 1977-10-09 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00004 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 <NEW is the "you name it, we got it" string.
C00006 00003 INSTRUMENT VN1
C00015 00004 INSTRUMENT VN3
C00040 ENDMK
C⊗;
<NEW is the "you name it, we got it" string.
OUTSPEC←"REW.SND/BYTESIZE=12/HEADER/PLAY/SAVE=256";
SRATE ← 25600; MAG ← 512 / SRATE; NCHNS ← 1;
ARRAY GlissFunc, DecayFunc, AttackFunc, Sinewave, Ampfunc(512);
Synth(Sinewave); 1,1 999;
SEG(Ampfunc);0,0 1,25 1,50 0,75 0,100;
SEG(GlissFunc);0,1 1,50 0,100;
SEG(AttackFunc);0,0 1,100;
SEG(DecayFunc);1,1 .6,5 .3,10 .15,25 .07,50 0,100;
FUNCTION Bowset (b,m1,dt,at,r,d);
Begin
IF b = 0
THEN IF m1 > 0.08
THEN BEGIN
dt ← .7; at ← .2;
END
ELSE BEGIN
dt ← .7; at ← .05; r←0;
END
ELSE
IF m1 > .05
THEN BEGIN
dt ← .05; at ← .2;
END
ELSE BEGIN
dt ← .05; at ← .05; r ← 0;
END;
m1 ← dt;
IF at + dt ≥ d
THEN BEGIN
at ← d * at;
dt ← d * dt;
IF at≤.05 THEN at ← d - dt - .01;
END;
end;
Function NumSet (Vr,Va,sf,f,dl,s1,r,i1,i2,i3,im,lf);
Begin
VR ← 5.25 + RAND * .75;
VA ← .006 + RAND * .001;
SF ← F * MAG;
DL ← 1000 / (F);
IF S1 = 0 THEN r ← .1;
I1 ← 7.5 * Im / LF;
I2 ← 5 / SQRT(F);
I3 ← IM * 30*(8.5-(LF))/F;
end;
INSTRUMENT VN1;
Variable /NewMag, /env;
VARIABLE Reset1, racket, OtherFreq, /Gliss, Distance, Stereo,
Freq, Amp1, Amp2, Duration, AttackTime, DecayTime, Memory1,
Index1, Index2, Index3, ScFreq, DecayLength, Switch1, Switch2,
/Mod1, /Mod2, /Mod3, /Att, /Vibrato, IMult, /Snd,
/Flutter, VibRate, VibAmp, /Ramp, /Decay, VibSwitch, LogFreq,
GlissLength, Bowing, DecayCall, VibCall, GlissCall, RampCall;
Memory1←1;
I_ONLY BEGIN
Duration ← P2;
Freq ← P3;
Amp1 ← P4;
Amp2 ← P5; <end volume if bowing = 1.
OtherFreq ← P6; <Sets endpoint of Gliss.
Switch1 ← P14; <1=ARCO, 0=PIZZ.
Switch2 ← 1 - Switch1;
IMult ← P7 - (Switch2 / 4);
VibSwitch ← P8; <1 = Vib. 0 = no Vib.
Bowing ← P9; <0=Detached, 1=Legato.
Distance ← P10;
Stereo ← P11; <0=All OUTB, 1=All OUTA.
racket ← P12;
GlissLength ← p13 * p2;; <if OtherFreq ≠ Freq, sets amount of glissando
LogFreq ← Alog(Freq);
DecayCall ← VibCall ← RampCall ← GlissCall ← 20;
IF Amp1 = Amp2 THEN RampCall ← SRATE;
IF Freq = OtherFreq THEN GlissCall ← SRATE;
IF VibSwitch = 0 Then VibCall ← SRATE;
IF Switch1 = 1 Then DecayCall ← SRATE;
Bowset (bowing,memory1,decaytime,attacktime,racket,duration);
NumSet(VibRate,VibAmp,ScFreq,Freq,DecayLength,Switch1,racket,
Index1,Index2,Index3,IMult,LogFreq);
END;
Decay ← Switch1 + EXPEN[DecayCall] (Switch2, MAG * 20 / DecayLength, DecayFunc);
ENV ← Switch2 +
LINEN[20] (Switch1, AttackTime/20, DecayTime/20, Duration/20, Ampfunc, Reset1 ← 0);
Ramp ← Amp1 + NOSCIL[RampCall] (Amp2 - Amp1, 20 * (MAG / Duration), AttackFunc);
Gliss ← Freq + EXPEN[GlissCall] (OtherFreq - Freq, 20 * MAG/GlissLength, GlissFunc);
Flutter ← RANDI[VibCall] (1, 200 * MAG);
Vibrato ← NOSCIL[VibCall] (ENV, VibRate * MAG * 20, Sinewave);
Att ← 1 - EXPEN[20](1, MAG*640, AttackFunc);
Newmag ← (1 + Flutter * .005) * (1 + Vibrato * VibAmp) * (1 +
RANDI (racket * Att, 2000 * MAG)) * Gliss * MAG;
Mod1 ← NOSCIL (Decay * ScFreq * (Att+Index1), Newmag, Sinewave);
Mod2 ← NOSCIL (Decay * ScFreq * (Att+Index2), 4 * Newmag, Sinewave);
Mod3 ← NOSCIL (Decay * ScFreq * (Att+Index3), 3 * Newmag, Sinewave);
Snd ← ZOSCIL (Decay * ENV * Ramp, Newmag + Mod1 + Mod2 + Mod3, Sinewave);
<DSIG ← DSIG + Snd * .05;
OUTA ← OUTA + Snd * Stereo / Distance;
<OUTB ← OUTB + Snd * (1 - Stereo) / Distance;
END;
INSTRUMENT VN2;
Variable /NewMag, /env;
VARIABLE Reset1, racket, OtherFreq, /Gliss, Distance, Stereo,
Freq, Amp1, Amp2, Duration, AttackTime, DecayTime, Memory1,
Index1, Index2, Index3, ScFreq, DecayLength, Switch1, Switch2,
/Mod1, /Mod2, /Mod3, /Att, /Vibrato, IMult, /Snd,
/Flutter, VibRate, VibAmp, /Ramp, /Decay, VibSwitch, LogFreq,
GlissLength, Bowing, DecayCall, VibCall, GlissCall, RampCall;
Memory1←1;
I_ONLY BEGIN
Duration ← P2;
Freq ← P3;
Amp1 ← P4;
Amp2 ← P5; <end volume if bowing = 1.
OtherFreq ← P6; <Sets endpoint of Gliss.
Switch1 ← P14; <1=ARCO, 0=PIZZ.
Switch2 ← 1 - Switch1;
IMult ← P7 - (Switch2 / 4);
VibSwitch ← P8; <1 = Vib. 0 = no Vib.
Bowing ← P9; <0=Detached, 1=Legato.
Distance ← P10;
Stereo ← P11; <0=All OUTB, 1=All OUTA.
racket ← P12;
GlissLength ← p13 * p2;; <if OtherFreq ≠ Freq, sets amount of glissando
LogFreq ← Alog(Freq);
DecayCall ← VibCall ← RampCall ← GlissCall ← 20;
IF Amp1 = Amp2 THEN RampCall ← SRATE;
IF Freq = OtherFreq THEN GlissCall ← SRATE;
IF VibSwitch = 0 Then VibCall ← SRATE;
IF Switch1 = 1 Then DecayCall ← SRATE;
Bowset (bowing,memory1,decaytime,attacktime,racket,duration);
NumSet(VibRate,VibAmp,ScFreq,Freq,DecayLength,Switch1,racket,
Index1,Index2,Index3,IMult,LogFreq);
END;
Decay ← Switch1 + EXPEN[DecayCall] (Switch2, MAG * 20 / DecayLength, DecayFunc);
ENV ← Switch2 +
LINEN[20] (Switch1, AttackTime/20, DecayTime/20, Duration/20, Ampfunc, Reset1 ← 0);
Ramp ← Amp1 + NOSCIL[RampCall] (Amp2 - Amp1, 20 * (MAG / Duration), AttackFunc);
Gliss ← Freq + EXPEN[GlissCall] (OtherFreq - Freq, 20 * MAG/GlissLength, GlissFunc);
Flutter ← RANDI[VibCall] (1, 200 * MAG);
Vibrato ← NOSCIL[VibCall] (ENV, VibRate * MAG * 20, Sinewave);
Att ← 1 - EXPEN[20](1, MAG*640, AttackFunc);
Newmag ← (1 + Flutter * .005) * (1 + Vibrato * VibAmp) * (1 +
RANDI (racket * Att, 2000 * MAG)) * Gliss * MAG;
Mod1 ← NOSCIL (Decay * ScFreq * (Att+Index1), Newmag, Sinewave);
Mod2 ← NOSCIL (Decay * ScFreq * (Att+Index2), 4 * Newmag, Sinewave);
Mod3 ← NOSCIL (Decay * ScFreq * (Att+Index3), 3 * Newmag, Sinewave);
Snd ← ZOSCIL (Decay * ENV * Ramp, Newmag + Mod1 + Mod2 + Mod3, Sinewave);
<DSIG ← DSIG + Snd * .05;
OUTA ← OUTA + Snd * Stereo / Distance;
<OUTB ← OUTB + Snd * (1 - Stereo) / Distance;
END;
INSTRUMENT VN3;
Variable /NewMag, /env;
VARIABLE Reset1, racket, OtherFreq, /Gliss, Distance, Stereo,
Freq, Amp1, Amp2, Duration, AttackTime, DecayTime, Memory1,
Index1, Index2, Index3, ScFreq, DecayLength, Switch1, Switch2,
/Mod1, /Mod2, /Mod3, /Att, /Vibrato, IMult, /Snd,
/Flutter, VibRate, VibAmp, /Ramp, /Decay, VibSwitch, LogFreq,
GlissLength, Bowing, DecayCall, VibCall, GlissCall, RampCall;
Memory1←1;
I_ONLY BEGIN
Duration ← P2;
Freq ← P3;
Amp1 ← P4;
Amp2 ← P5; <end volume if bowing = 1.
OtherFreq ← P6; <Sets endpoint of Gliss.
Switch1 ← P14; <1=ARCO, 0=PIZZ.
Switch2 ← 1 - Switch1;
IMult ← P7 - (Switch2 / 4);
VibSwitch ← P8; <1 = Vib. 0 = no Vib.
Bowing ← P9; <0=Detached, 1=Legato.
Distance ← P10;
Stereo ← P11; <0=All OUTB, 1=All OUTA.
racket ← P12;
GlissLength ← p13 * p2;; <if OtherFreq ≠ Freq, sets amount of glissando
LogFreq ← Alog(Freq);
DecayCall ← VibCall ← RampCall ← GlissCall ← 20;
IF Amp1 = Amp2 THEN RampCall ← SRATE;
IF Freq = OtherFreq THEN GlissCall ← SRATE;
IF VibSwitch = 0 Then VibCall ← SRATE;
IF Switch1 = 1 Then DecayCall ← SRATE;
Bowset (bowing,memory1,decaytime,attacktime,racket,duration);
NumSet(VibRate,VibAmp,ScFreq,Freq,DecayLength,Switch1,racket,
Index1,Index2,Index3,IMult,LogFreq);
END;
Decay ← Switch1 + EXPEN[DecayCall] (Switch2, MAG * 20 / DecayLength, DecayFunc);
ENV ← Switch2 +
LINEN[20] (Switch1, AttackTime/20, DecayTime/20, Duration/20, Ampfunc, Reset1 ← 0);
Ramp ← Amp1 + NOSCIL[RampCall] (Amp2 - Amp1, 20 * (MAG / Duration), AttackFunc);
Gliss ← Freq + EXPEN[GlissCall] (OtherFreq - Freq, 20 * MAG/GlissLength, GlissFunc);
Flutter ← RANDI[VibCall] (1, 200 * MAG);
Vibrato ← NOSCIL[VibCall] (ENV, VibRate * MAG * 20, Sinewave);
Att ← 1 - EXPEN[20](1, MAG*640, AttackFunc);
Newmag ← (1 + Flutter * .005) * (1 + Vibrato * VibAmp) * (1 +
RANDI (racket * Att, 2000 * MAG)) * Gliss * MAG;
Mod1 ← NOSCIL (Decay * ScFreq * (Att+Index1), Newmag, Sinewave);
Mod2 ← NOSCIL (Decay * ScFreq * (Att+Index2), 4 * Newmag, Sinewave);
Mod3 ← NOSCIL (Decay * ScFreq * (Att+Index3), 3 * Newmag, Sinewave);
Snd ← ZOSCIL (Decay * ENV * Ramp, Newmag + Mod1 + Mod2 + Mod3, Sinewave);
<DSIG ← DSIG + Snd * .05;
OUTA ← OUTA + Snd * Stereo / Distance;
<OUTB ← OUTB + Snd * (1 - Stereo) / Distance;
END;
INSTRUMENT VN4;
Variable /NewMag, /env;
VARIABLE Reset1, racket, OtherFreq, /Gliss, Distance, Stereo,
Freq, Amp1, Amp2, Duration, AttackTime, DecayTime, Memory1,
Index1, Index2, Index3, ScFreq, DecayLength, Switch1, Switch2,
/Mod1, /Mod2, /Mod3, /Att, /Vibrato, IMult, /Snd,
/Flutter, VibRate, VibAmp, /Ramp, /Decay, VibSwitch, LogFreq,
GlissLength, Bowing, DecayCall, VibCall, GlissCall, RampCall;
Memory1←1;
I_ONLY BEGIN
Duration ← P2;
Freq ← P3;
Amp1 ← P4;
Amp2 ← P5; <end volume if bowing = 1.
OtherFreq ← P6; <Sets endpoint of Gliss.
Switch1 ← P14; <1=ARCO, 0=PIZZ.
Switch2 ← 1 - Switch1;
IMult ← P7 - (Switch2 / 4);
VibSwitch ← P8; <1 = Vib. 0 = no Vib.
Bowing ← P9; <0=Detached, 1=Legato.
Distance ← P10;
Stereo ← P11; <0=All OUTB, 1=All OUTA.
racket ← P12;
GlissLength ← p13 * p2;; <if OtherFreq ≠ Freq, sets amount of glissando
LogFreq ← Alog(Freq);
DecayCall ← VibCall ← RampCall ← GlissCall ← 20;
IF Amp1 = Amp2 THEN RampCall ← SRATE;
IF Freq = OtherFreq THEN GlissCall ← SRATE;
IF VibSwitch = 0 Then VibCall ← SRATE;
IF Switch1 = 1 Then DecayCall ← SRATE;
Bowset (bowing,memory1,decaytime,attacktime,racket,duration);
NumSet(VibRate,VibAmp,ScFreq,Freq,DecayLength,Switch1,racket,
Index1,Index2,Index3,IMult,LogFreq);
END;
Decay ← Switch1 + EXPEN[DecayCall] (Switch2, MAG * 20 / DecayLength, DecayFunc);
ENV ← Switch2 +
LINEN[20] (Switch1, AttackTime/20, DecayTime/20, Duration/20, Ampfunc, Reset1 ← 0);
Ramp ← Amp1 + NOSCIL[RampCall] (Amp2 - Amp1, 20 * (MAG / Duration), AttackFunc);
Gliss ← Freq + EXPEN[GlissCall] (OtherFreq - Freq, 20 * MAG/GlissLength, GlissFunc);
Flutter ← RANDI[VibCall] (1, 200 * MAG);
Vibrato ← NOSCIL[VibCall] (ENV, VibRate * MAG * 20, Sinewave);
Att ← 1 - EXPEN[20](1, MAG*640, AttackFunc);
Newmag ← (1 + Flutter * .005) * (1 + Vibrato * VibAmp) * (1 +
RANDI (racket * Att, 2000 * MAG)) * Gliss * MAG;
Mod1 ← NOSCIL (Decay * ScFreq * (Att+Index1), Newmag, Sinewave);
Mod2 ← NOSCIL (Decay * ScFreq * (Att+Index2), 4 * Newmag, Sinewave);
Mod3 ← NOSCIL (Decay * ScFreq * (Att+Index3), 3 * Newmag, Sinewave);
Snd ← ZOSCIL (Decay * ENV * Ramp, Newmag + Mod1 + Mod2 + Mod3, Sinewave);
<DSIG ← DSIG + Snd * .05;
OUTA ← OUTA + Snd * Stereo / Distance;
<OUTB ← OUTB + Snd * (1 - Stereo) / Distance;
END;
INSTRUMENT VN5;
Variable /NewMag, /env;
VARIABLE Reset1, racket, OtherFreq, /Gliss, Distance, Stereo,
Freq, Amp1, Amp2, Duration, AttackTime, DecayTime, Memory1,
Index1, Index2, Index3, ScFreq, DecayLength, Switch1, Switch2,
/Mod1, /Mod2, /Mod3, /Att, /Vibrato, IMult, /Snd,
/Flutter, VibRate, VibAmp, /Ramp, /Decay, VibSwitch, LogFreq,
GlissLength, Bowing, DecayCall, VibCall, GlissCall, RampCall;
Memory1←1;
I_ONLY BEGIN
Duration ← P2;
Freq ← P3;
Amp1 ← P4;
Amp2 ← P5; <end volume if bowing = 1.
OtherFreq ← P6; <Sets endpoint of Gliss.
Switch1 ← P14; <1=ARCO, 0=PIZZ.
Switch2 ← 1 - Switch1;
IMult ← P7 - (Switch2 / 4);
VibSwitch ← P8; <1 = Vib. 0 = no Vib.
Bowing ← P9; <0=Detached, 1=Legato.
Distance ← P10;
Stereo ← P11; <0=All OUTB, 1=All OUTA.
racket ← P12;
GlissLength ← p13 * p2;; <if OtherFreq ≠ Freq, sets amount of glissando
LogFreq ← Alog(Freq);
DecayCall ← VibCall ← RampCall ← GlissCall ← 20;
IF Amp1 = Amp2 THEN RampCall ← SRATE;
IF Freq = OtherFreq THEN GlissCall ← SRATE;
IF VibSwitch = 0 Then VibCall ← SRATE;
IF Switch1 = 1 Then DecayCall ← SRATE;
Bowset (bowing,memory1,decaytime,attacktime,racket,duration);
NumSet(VibRate,VibAmp,ScFreq,Freq,DecayLength,Switch1,racket,
Index1,Index2,Index3,IMult,LogFreq);
END;
Decay ← Switch1 + EXPEN[DecayCall] (Switch2, MAG * 20 / DecayLength, DecayFunc);
ENV ← Switch2 +
LINEN[20] (Switch1, AttackTime/20, DecayTime/20, Duration/20, Ampfunc, Reset1 ← 0);
Ramp ← Amp1 + NOSCIL[RampCall] (Amp2 - Amp1, 20 * (MAG / Duration), AttackFunc);
Gliss ← Freq + EXPEN[GlissCall] (OtherFreq - Freq, 20 * MAG/GlissLength, GlissFunc);
Flutter ← RANDI[VibCall] (1, 200 * MAG);
Vibrato ← NOSCIL[VibCall] (ENV, VibRate * MAG * 20, Sinewave);
Att ← 1 - EXPEN[20](1, MAG*640, AttackFunc);
Newmag ← (1 + Flutter * .005) * (1 + Vibrato * VibAmp) * (1 +
RANDI (racket * Att, 2000 * MAG)) * Gliss * MAG;
Mod1 ← NOSCIL (Decay * ScFreq * (Att+Index1), Newmag, Sinewave);
Mod2 ← NOSCIL (Decay * ScFreq * (Att+Index2), 4 * Newmag, Sinewave);
Mod3 ← NOSCIL (Decay * ScFreq * (Att+Index3), 3 * Newmag, Sinewave);
Snd ← ZOSCIL (Decay * ENV * Ramp, Newmag + Mod1 + Mod2 + Mod3, Sinewave);
<DSIG ← DSIG + Snd * .05;
OUTA ← OUTA + Snd * Stereo / Distance;
<OUTB ← OUTB + Snd * (1 - Stereo) / Distance;
END;
INSTRUMENT VN6;
Variable /NewMag, /env;
VARIABLE Reset1, racket, OtherFreq, /Gliss, Distance, Stereo,
Freq, Amp1, Amp2, Duration, AttackTime, DecayTime, Memory1,
Index1, Index2, Index3, ScFreq, DecayLength, Switch1, Switch2,
/Mod1, /Mod2, /Mod3, /Att, /Vibrato, IMult, /Snd,
/Flutter, VibRate, VibAmp, /Ramp, /Decay, VibSwitch, LogFreq,
GlissLength, Bowing, DecayCall, VibCall, GlissCall, RampCall;
Memory1←1;
I_ONLY BEGIN
Duration ← P2;
Freq ← P3;
Amp1 ← P4;
Amp2 ← P5; <end volume if bowing = 1.
OtherFreq ← P6; <Sets endpoint of Gliss.
Switch1 ← P14; <1=ARCO, 0=PIZZ.
Switch2 ← 1 - Switch1;
IMult ← P7 - (Switch2 / 4);
VibSwitch ← P8; <1 = Vib. 0 = no Vib.
Bowing ← P9; <0=Detached, 1=Legato.
Distance ← P10;
Stereo ← P11; <0=All OUTB, 1=All OUTA.
racket ← P12;
GlissLength ← p13 * p2;; <if OtherFreq ≠ Freq, sets amount of glissando
LogFreq ← Alog(Freq);
DecayCall ← VibCall ← RampCall ← GlissCall ← 20;
IF Amp1 = Amp2 THEN RampCall ← SRATE;
IF Freq = OtherFreq THEN GlissCall ← SRATE;
IF VibSwitch = 0 Then VibCall ← SRATE;
IF Switch1 = 1 Then DecayCall ← SRATE;
Bowset (bowing,memory1,decaytime,attacktime,racket,duration);
NumSet(VibRate,VibAmp,ScFreq,Freq,DecayLength,Switch1,racket,
Index1,Index2,Index3,IMult,LogFreq);
END;
Decay ← Switch1 + EXPEN[DecayCall] (Switch2, MAG * 20 / DecayLength, DecayFunc);
ENV ← Switch2 +
LINEN[20] (Switch1, AttackTime/20, DecayTime/20, Duration/20, Ampfunc, Reset1 ← 0);
Ramp ← Amp1 + NOSCIL[RampCall] (Amp2 - Amp1, 20 * (MAG / Duration), AttackFunc);
Gliss ← Freq + EXPEN[GlissCall] (OtherFreq - Freq, 20 * MAG/GlissLength, GlissFunc);
Flutter ← RANDI[VibCall] (1, 200 * MAG);
Vibrato ← NOSCIL[VibCall] (ENV, VibRate * MAG * 20, Sinewave);
Att ← 1 - EXPEN[20](1, MAG*640, AttackFunc);
Newmag ← (1 + Flutter * .005) * (1 + Vibrato * VibAmp) * (1 +
RANDI (racket * Att, 2000 * MAG)) * Gliss * MAG;
Mod1 ← NOSCIL (Decay * ScFreq * (Att+Index1), Newmag, Sinewave);
Mod2 ← NOSCIL (Decay * ScFreq * (Att+Index2), 4 * Newmag, Sinewave);
Mod3 ← NOSCIL (Decay * ScFreq * (Att+Index3), 3 * Newmag, Sinewave);
Snd ← ZOSCIL (Decay * ENV * Ramp, Newmag + Mod1 + Mod2 + Mod3, Sinewave);
<DSIG ← DSIG + Snd * .05;
OUTA ← OUTA + Snd * Stereo / Distance;
<OUTB ← OUTB + Snd * (1 - Stereo) / Distance;
END;
INSTRUMENT VN7;
Variable /NewMag, /env;
VARIABLE Reset1, racket, OtherFreq, /Gliss, Distance, Stereo,
Freq, Amp1, Amp2, Duration, AttackTime, DecayTime, Memory1,
Index1, Index2, Index3, ScFreq, DecayLength, Switch1, Switch2,
/Mod1, /Mod2, /Mod3, /Att, /Vibrato, IMult, /Snd,
/Flutter, VibRate, VibAmp, /Ramp, /Decay, VibSwitch, LogFreq,
GlissLength, Bowing, DecayCall, VibCall, GlissCall, RampCall;
Memory1←1;
I_ONLY BEGIN
Duration ← P2;
Freq ← P3;
Amp1 ← P4;
Amp2 ← P5; <end volume if bowing = 1.
OtherFreq ← P6; <Sets endpoint of Gliss.
Switch1 ← P14; <1=ARCO, 0=PIZZ.
Switch2 ← 1 - Switch1;
IMult ← P7 - (Switch2 / 4);
VibSwitch ← P8; <1 = Vib. 0 = no Vib.
Bowing ← P9; <0=Detached, 1=Legato.
Distance ← P10;
Stereo ← P11; <0=All OUTB, 1=All OUTA.
racket ← P12;
GlissLength ← p13 * p2;; <if OtherFreq ≠ Freq, sets amount of glissando
LogFreq ← Alog(Freq);
DecayCall ← VibCall ← RampCall ← GlissCall ← 20;
IF Amp1 = Amp2 THEN RampCall ← SRATE;
IF Freq = OtherFreq THEN GlissCall ← SRATE;
IF VibSwitch = 0 Then VibCall ← SRATE;
IF Switch1 = 1 Then DecayCall ← SRATE;
Bowset (bowing,memory1,decaytime,attacktime,racket,duration);
NumSet(VibRate,VibAmp,ScFreq,Freq,DecayLength,Switch1,racket,
Index1,Index2,Index3,IMult,LogFreq);
END;
Decay ← Switch1 + EXPEN[DecayCall] (Switch2, MAG * 20 / DecayLength, DecayFunc);
ENV ← Switch2 +
LINEN[20] (Switch1, AttackTime/20, DecayTime/20, Duration/20, Ampfunc, Reset1 ← 0);
Ramp ← Amp1 + NOSCIL[RampCall] (Amp2 - Amp1, 20 * (MAG / Duration), AttackFunc);
Gliss ← Freq + EXPEN[GlissCall] (OtherFreq - Freq, 20 * MAG/GlissLength, GlissFunc);
Flutter ← RANDI[VibCall] (1, 200 * MAG);
Vibrato ← NOSCIL[VibCall] (ENV, VibRate * MAG * 20, Sinewave);
Att ← 1 - EXPEN[20](1, MAG*640, AttackFunc);
Newmag ← (1 + Flutter * .005) * (1 + Vibrato * VibAmp) * (1 +
RANDI (racket * Att, 2000 * MAG)) * Gliss * MAG;
Mod1 ← NOSCIL (Decay * ScFreq * (Att+Index1), Newmag, Sinewave);
Mod2 ← NOSCIL (Decay * ScFreq * (Att+Index2), 4 * Newmag, Sinewave);
Mod3 ← NOSCIL (Decay * ScFreq * (Att+Index3), 3 * Newmag, Sinewave);
Snd ← ZOSCIL (Decay * ENV * Ramp, Newmag + Mod1 + Mod2 + Mod3, Sinewave);
<DSIG ← DSIG + Snd * .05;
OUTA ← OUTA + Snd * Stereo / Distance;
<OUTB ← OUTB + Snd * (1 - Stereo) / Distance;
END;
INSTRUMENT VN8;
Variable /NewMag, /env;
VARIABLE Reset1, racket, OtherFreq, /Gliss, Distance, Stereo,
Freq, Amp1, Amp2, Duration, AttackTime, DecayTime, Memory1,
Index1, Index2, Index3, ScFreq, DecayLength, Switch1, Switch2,
/Mod1, /Mod2, /Mod3, /Att, /Vibrato, IMult, /Snd,
/Flutter, VibRate, VibAmp, /Ramp, /Decay, VibSwitch, LogFreq,
GlissLength, Bowing, DecayCall, VibCall, GlissCall, RampCall;
Memory1←1;
I_ONLY BEGIN
Duration ← P2;
Freq ← P3;
Amp1 ← P4;
Amp2 ← P5; <end volume if bowing = 1.
OtherFreq ← P6; <Sets endpoint of Gliss.
Switch1 ← P14; <1=ARCO, 0=PIZZ.
Switch2 ← 1 - Switch1;
IMult ← P7 - (Switch2 / 4);
VibSwitch ← P8; <1 = Vib. 0 = no Vib.
Bowing ← P9; <0=Detached, 1=Legato.
Distance ← P10;
Stereo ← P11; <0=All OUTB, 1=All OUTA.
racket ← P12;
GlissLength ← p13 * p2;; <if OtherFreq ≠ Freq, sets amount of glissando
LogFreq ← Alog(Freq);
DecayCall ← VibCall ← RampCall ← GlissCall ← 20;
IF Amp1 = Amp2 THEN RampCall ← SRATE;
IF Freq = OtherFreq THEN GlissCall ← SRATE;
IF VibSwitch = 0 Then VibCall ← SRATE;
IF Switch1 = 1 Then DecayCall ← SRATE;
Bowset (bowing,memory1,decaytime,attacktime,racket,duration);
NumSet(VibRate,VibAmp,ScFreq,Freq,DecayLength,Switch1,racket,
Index1,Index2,Index3,IMult,LogFreq);
END;
Decay ← Switch1 + EXPEN[DecayCall] (Switch2, MAG * 20 / DecayLength, DecayFunc);
ENV ← Switch2 +
LINEN[20] (Switch1, AttackTime/20, DecayTime/20, Duration/20, Ampfunc, Reset1 ← 0);
Ramp ← Amp1 + NOSCIL[RampCall] (Amp2 - Amp1, 20 * (MAG / Duration), AttackFunc);
Gliss ← Freq + EXPEN[GlissCall] (OtherFreq - Freq, 20 * MAG/GlissLength, GlissFunc);
Flutter ← RANDI[VibCall] (1, 200 * MAG);
Vibrato ← NOSCIL[VibCall] (ENV, VibRate * MAG * 20, Sinewave);
Att ← 1 - EXPEN[20](1, MAG*640, AttackFunc);
Newmag ← (1 + Flutter * .005) * (1 + Vibrato * VibAmp) * (1 +
RANDI (racket * Att, 2000 * MAG)) * Gliss * MAG;
Mod1 ← NOSCIL (Decay * ScFreq * (Att+Index1), Newmag, Sinewave);
Mod2 ← NOSCIL (Decay * ScFreq * (Att+Index2), 4 * Newmag, Sinewave);
Mod3 ← NOSCIL (Decay * ScFreq * (Att+Index3), 3 * Newmag, Sinewave);
Snd ← ZOSCIL (Decay * ENV * Ramp, Newmag + Mod1 + Mod2 + Mod3, Sinewave);
<DSIG ← DSIG + Snd * .05;
OUTA ← OUTA + Snd * Stereo / Distance;
<OUTB ← OUTB + Snd * (1 - Stereo) / Distance;
END;